package com.grupoconstruobras.sigo.data.personas;

//import com.grupoconstruobras.sigo.data.exhumaciones.catalogue.TipoDocumentoIdentidad;
//import com.grupoconstruobras.sigo.data.exhumaciones.catalogue.TipoGrupoEtnico;
import com.grupoconstruobras.sigo.security.audit.data.GeneratorIdentifierAuditEntity;

import java.util.Date;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 * The persistent class for the persona database table.
 */
@Entity(name = "com.grupoconstruobras.sigo.data.personas.Persona")
@Table(name = "persona", schema = "public")
@AttributeOverrides({ @AttributeOverride(name = "id", column = @Column(name = "idpersona")) })
@SequenceGenerator(name = "simple_identifier", schema = "public", sequenceName = "PERSONA_IDPERSONA_SEQ", initialValue = 1, allocationSize = 1)
public class Persona extends GeneratorIdentifierAuditEntity<Integer, Persona> {
//public class Persona extends GeneratorIdentifier<Integer, Persona> {

	@Column(name = "numeroidentificacion")
	private String numeroIdentificacion;

	@Column(name = "primernombre")
	private String primerNombre;

	@Column(name = "segundonombre")
	private String segundoNombre;

	@Column(name = "primerapellido")
	private String primerApellido;

	@Column(name = "segundoapellido")
	private String segundoApellido;

	@Column(name = "alias")
	private String alias;

	@Column(name = "direccion")
	private String direccion;

	@Column(name = "telefono")
	private String telefono;

	@Column(name = "mail")
	private String mail;

	@Column(name = "vereda")
	private String vereda;

	@Column(name = "corregimiento")
	private String corregimiento;

	@Temporal(TemporalType.DATE)
	@Column(name = "fechanacimiento")
	private Date fechaNacimiento;

	@Temporal(TemporalType.DATE)
	@Column(name = "fechaexpedicion")
	private Date fechaExpedicion;

	@Column(name = "idtipopersona")
	private Integer idtipopersona;

//	@ManyToOne(fetch = FetchType.LAZY)
//	@JoinColumn(name = "iddocumentodeidentidad")
//	private TipoDocumentoIdentidad tipoDocumentodeidentidad;

	@Column(name = "idpaisdocumentodeidentidad")
	private Integer idpaisdocumentodeidentidad;

	@Column(name = "idpaisdenacimiento")
	private Integer idpaisdenacimiento;

	@Column(name = "idmunicipionacimiento")
	private Integer idmunicipionacimiento;

	@Column(name = "idestadocivil")
	private Integer idestadocivil;

	@Column(name = "idniveleducacion")
	private Integer idniveleducacion;

	@Column(name = "idprofesion")
	private Integer idprofesion;

	@Column(name = "iddepartamentodocumentodeidentidad")
	private Integer iddepartamentodocumentodeidentidad;

	@Column(name = "idfuenteinformacion")
	private Integer idfuenteinformacion;

	@Column(name = "iddepartamentonacimineto")
	private Integer iddepartamentonacimineto;

	@Column(name = "idgruposanguineo")
	private Integer idgruposanguineo;

	@Column(name = "idpaisdireccion")
	private Integer idpaisdireccion;

	@Column(name = "iddepartamentodireccion")
	private Integer iddepartamentodireccion;

	@Column(name = "idmunicipiodireccion")
	private Integer idmunicipiodireccion;

	@Column(name = "estado")
	private String estado;

	@Column(name = "foto")
	private Integer foto;

	@Column(name = "idgenero")
	private String idgenero;

	@Column(name = "oficio")
	private String oficio;

	@Column(name = "inspecciondireccion")
	private String inspecciondireccion;

	@Column(name = "barriodireccion")
	private String barriodireccion;

	@Column(name = "fincadireccion")
	private String fincadireccion;

//	@Column(name = "usuario")
//	private String usuario;

	@Column(name = "idraza")
	private Integer idraza;

	@Column(name = "idreligion")
	private Integer idreligion;

	@Column(name = "idpartido_politico")
	private Integer idpartido_politico;

	@Column(name = "ididentificacion")
	private Integer ididentificacion;
	

//	@ManyToOne(fetch = FetchType.LAZY)
//	@JoinColumn(name = "idgrupos_etnicos")
//	private TipoGrupoEtnico grupos_etnicos;

	@Column(name = "idtendenciasexual")
	private Integer idtendenciasexual;

	@Column(name = "permisosms")
	private Boolean permisosms;

//	@Column(name = "ip")
//	private String ip;

	@Column(name = "observacion")
	private String observacion;

	@Column(name = "idtipodiscapacidad")
	private Integer idtipodiscapacidad;

	@Column(name = "movil")
	private String movil;

	@Column(name = "sitiodireccion")
	private String sitiodireccion;

	@Transient
	private String nombre;
	
	public Persona() {
//		tipoDocumentodeidentidad = new TipoDocumentoIdentidad();
	}
	
	public String getNombre() {
		if(nombre == null) {
			nombre = this.getPrimerNombre() + " " + this.getSegundoNombre() + " " + this.getPrimerApellido() + " " + this.getPrimerApellido(); 
		}
		return nombre; 
	}

	public String getNumeroIdentificacion() {
		return numeroIdentificacion;
	}

	public void setNumeroIdentificacion(String numeroIdentificacion) {
		this.numeroIdentificacion = numeroIdentificacion;
	}

	public String getPrimerNombre() {
		return primerNombre;
	}

	public void setPrimerNombre(String primerNombre) {
		this.primerNombre = primerNombre;
	}

	public String getSegundoNombre() {
		return segundoNombre;
	}

	public void setSegundoNombre(String segundoNombre) {
		this.segundoNombre = segundoNombre;
	}

	public String getPrimerApellido() {
		return primerApellido;
	}

	public void setPrimerApellido(String primerApellido) {
		this.primerApellido = primerApellido;
	}

	public String getSegundoApellido() {
		return segundoApellido;
	}

	public void setSegundoApellido(String segundoApellido) {
		this.segundoApellido = segundoApellido;
	}

	public String getAlias() {
		return alias;
	}

	public void setAlias(String alias) {
		this.alias = alias;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getMail() {
		return mail;
	}

	public void setMail(String mail) {
		this.mail = mail;
	}

	public String getVereda() {
		return vereda;
	}

	public void setVereda(String vereda) {
		this.vereda = vereda;
	}

	public String getCorregimiento() {
		return corregimiento;
	}

	public void setCorregimiento(String corregimiento) {
		this.corregimiento = corregimiento;
	}

	public Date getFechaNacimiento() {
		return fechaNacimiento;
	}

	public void setFechaNacimiento(Date fechaNacimiento) {
		this.fechaNacimiento = fechaNacimiento;
	}

	public Date getFechaExpedicion() {
		return fechaExpedicion;
	}

	public void setFechaExpedicion(Date fechaExpedicion) {
		this.fechaExpedicion = fechaExpedicion;
	}

	public Integer getIdtipopersona() {
		return idtipopersona;
	}

	public void setIdtipopersona(Integer idtipopersona) {
		this.idtipopersona = idtipopersona;
	}

//	public TipoDocumentoIdentidad getTipoDocumentodeidentidad() {
//		return tipoDocumentodeidentidad;
//	}
//
//	public void setTipoDocumentodeidentidad(
//			TipoDocumentoIdentidad tipoDocumentodeidentidad) {
//		this.tipoDocumentodeidentidad = tipoDocumentodeidentidad;
//	}

	public Integer getIdpaisdocumentodeidentidad() {
		return idpaisdocumentodeidentidad;
	}

	public void setIdpaisdocumentodeidentidad(Integer idpaisdocumentodeidentidad) {
		this.idpaisdocumentodeidentidad = idpaisdocumentodeidentidad;
	}

	public Integer getIdpaisdenacimiento() {
		return idpaisdenacimiento;
	}

	public void setIdpaisdenacimiento(Integer idpaisdenacimiento) {
		this.idpaisdenacimiento = idpaisdenacimiento;
	}

	public Integer getIdmunicipionacimiento() {
		return idmunicipionacimiento;
	}

	public void setIdmunicipionacimiento(Integer idmunicipionacimiento) {
		this.idmunicipionacimiento = idmunicipionacimiento;
	}

	public Integer getIdestadocivil() {
		return idestadocivil;
	}

	public void setIdestadocivil(Integer idestadocivil) {
		this.idestadocivil = idestadocivil;
	}

	public Integer getIdniveleducacion() {
		return idniveleducacion;
	}

	public void setIdniveleducacion(Integer idniveleducacion) {
		this.idniveleducacion = idniveleducacion;
	}

	public Integer getIdprofesion() {
		return idprofesion;
	}

	public void setIdprofesion(Integer idprofesion) {
		this.idprofesion = idprofesion;
	}

	public Integer getIddepartamentodocumentodeidentidad() {
		return iddepartamentodocumentodeidentidad;
	}

	public void setIddepartamentodocumentodeidentidad(
			Integer iddepartamentodocumentodeidentidad) {
		this.iddepartamentodocumentodeidentidad = iddepartamentodocumentodeidentidad;
	}

	public Integer getIdfuenteinformacion() {
		return idfuenteinformacion;
	}

	public void setIdfuenteinformacion(Integer idfuenteinformacion) {
		this.idfuenteinformacion = idfuenteinformacion;
	}

	public Integer getIddepartamentonacimineto() {
		return iddepartamentonacimineto;
	}

	public void setIddepartamentonacimineto(Integer iddepartamentonacimineto) {
		this.iddepartamentonacimineto = iddepartamentonacimineto;
	}

	public Integer getIdgruposanguineo() {
		return idgruposanguineo;
	}

	public void setIdgruposanguineo(Integer idgruposanguineo) {
		this.idgruposanguineo = idgruposanguineo;
	}

	public Integer getIdpaisdireccion() {
		return idpaisdireccion;
	}

	public void setIdpaisdireccion(Integer idpaisdireccion) {
		this.idpaisdireccion = idpaisdireccion;
	}

	public Integer getIddepartamentodireccion() {
		return iddepartamentodireccion;
	}

	public void setIddepartamentodireccion(Integer iddepartamentodireccion) {
		this.iddepartamentodireccion = iddepartamentodireccion;
	}

	public Integer getIdmunicipiodireccion() {
		return idmunicipiodireccion;
	}

	public void setIdmunicipiodireccion(Integer idmunicipiodireccion) {
		this.idmunicipiodireccion = idmunicipiodireccion;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Integer getFoto() {
		return foto;
	}

	public void setFoto(Integer foto) {
		this.foto = foto;
	}

	public String getIdgenero() {
		return idgenero;
	}

	public void setIdgenero(String idgenero) {
		this.idgenero = idgenero;
	}

	public String getOficio() {
		return oficio;
	}

	public void setOficio(String oficio) {
		this.oficio = oficio;
	}

	public String getInspecciondireccion() {
		return inspecciondireccion;
	}

	public void setInspecciondireccion(String inspecciondireccion) {
		this.inspecciondireccion = inspecciondireccion;
	}

	public String getBarriodireccion() {
		return barriodireccion;
	}

	public void setBarriodireccion(String barriodireccion) {
		this.barriodireccion = barriodireccion;
	}

	public String getFincadireccion() {
		return fincadireccion;
	}

	public void setFincadireccion(String fincadireccion) {
		this.fincadireccion = fincadireccion;
	}

//	public String getUsuario() {
//		return usuario;
//	}
//
//	public void setUsuario(String usuario) {
//		this.usuario = usuario;
//	}

	public Integer getIdraza() {
		return idraza;
	}

	public void setIdraza(Integer idraza) {
		this.idraza = idraza;
	}

	public Integer getIdreligion() {
		return idreligion;
	}

	public void setIdreligion(Integer idreligion) {
		this.idreligion = idreligion;
	}

	public Integer getIdpartido_politico() {
		return idpartido_politico;
	}

	public void setIdpartido_politico(Integer idpartido_politico) {
		this.idpartido_politico = idpartido_politico;
	}

	public Integer getIdidentificacion() {
		return ididentificacion;
	}

	public void setIdidentificacion(Integer ididentificacion) {
		this.ididentificacion = ididentificacion;
	}

	
//	public TipoGrupoEtnico getGrupos_etnicos() {
//		return grupos_etnicos;
//	}
//
//	public void setGrupos_etnicos(TipoGrupoEtnico grupos_etnicos) {
//		this.grupos_etnicos = grupos_etnicos;
//	}

	public Integer getIdtendenciasexual() {
		return idtendenciasexual;
	}

	public void setIdtendenciasexual(Integer idtendenciasexual) {
		this.idtendenciasexual = idtendenciasexual;
	}

	public Boolean getPermisosms() {
		return permisosms;
	}

	public void setPermisosms(Boolean permisosms) {
		this.permisosms = permisosms;
	}

//	public String getIp() {
//		return ip;
//	}
//
//	public void setIp(String ip) {
//		this.ip = ip;
//	}

	public String getObservacion() {
		return observacion;
	}

	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	public Integer getIdtipodiscapacidad() {
		return idtipodiscapacidad;
	}

	public void setIdtipodiscapacidad(Integer idtipodiscapacidad) {
		this.idtipodiscapacidad = idtipodiscapacidad;
	}

	public String getMovil() {
		return movil;
	}

	public void setMovil(String movil) {
		this.movil = movil;
	}

	public String getSitiodireccion() {
		return sitiodireccion;
	}

	public void setSitiodireccion(String sitiodireccion) {
		this.sitiodireccion = sitiodireccion;
	}
}